from django.shortcuts import render
from rest_framework import viewsets
from .models import AlloyPhaseDiagram
from .serializers import AlloyPhaseDiagramSerializer

# Create your views here.


class AlloyPhaseDiagramViewSet(viewsets.ModelViewSet):
    """
    合金相图视图集
    """
    queryset = AlloyPhaseDiagram.objects.all()
    serializer_class = AlloyPhaseDiagramSerializer

    def update(self, request, *args, **kwargs):
        # 编辑附件的情况：
        # 1、之前不存在附件，上传附件为新附件，直接添加
        # 2、之前不存在附件，上传附件为空，不处理
        # 3、之前已存在附件，上传附件为新附件，那么需要删除旧的附件，再添加新附件
        # 4、之前已存在附件，上传附件为空，那么需要删除旧的附件
        # 5、之前已存在附件，且未修改上传附件，这种情况已在前端处理，
        # 即不传polarization_curve和polarization_curve_empty参数
        # request.data包含polarization_curve参数说明需要上传新附件
        # request.data包含polarization_curve_empty参数说明上传附件为空
        data = request.data
        if 'alloy_phase_diagram' in data or 'alloy_phase_diagram_empty' in data:
            self.__delete_exist_file('alloy_phase_diagram')
        response = super().update(request, args, kwargs)
        return response

    def __delete_exist_file(self, key):
        instance = self.get_object()
        file = getattr(instance, key)
        if file != '':
            file.delete()